\section{Introducción Teórica}

\subsection{Los números complejos y el conjunto de Mandelbrot}
Sea $M$ el conjunto de Mandelbrot definido dentro del conjunto de los números complejos ${\mathbb C}$, definido como: \\
\begin{center}
$M = \left\{c\in \mathbb C: |P_c^n(0)| \le 2 \: \forall \: n \in \mathbb N \right\}$
\end{center}

Donde para cada $c \in \mathbb C$, sea $p_c : \mathbb C \rightarrow \mathbb C $ el polinomio cuadrático complejo definido como: $p_c : z \rightarrow z^2 + c$ y se considera además la secuencia: $(0, p_c(0), p_c(p_c(0)), ... )$ compuesta por las $n$ aplicaciones de $p_c(0)$ con $z_n = 0$ se dice que pertenece al conjunto $M$ si dicha secuencia de valores no diverge a infinito.

Desde el punto de vista matemático, el conjunto de Mandelbrot es de particular interés dado que cumple con propiedades tales como por ejemplo, ser un conjunto compacto y conexo. Tiene además la particularidad de ser atractivo desde el punto de vista estético por las formas que presenta cuando es dibujado sobre el plano complejo  ya que conforma un fractal, es decir, es una figura compleja que tiene la capacidad de ser fragmentada en partes arbitrariamente pequeñas que conservan la forma de la figura original.

\includegraphics[scale=0.25]{imgs/mandelbrot_full.png}

\subsection{Sobre la aritmética de precisión fija en implementaciones actuales}
La existencia de entes matemáticos infinitos y densos como los números reales hace imposible la representación de estos objetos en los modelos de cómputo actuales. Ante esta imposibilidad se optó por aproximar con distintos niveles de precisión a los números reales mediante sistemas de representación numérica como el de punto flotante. 

A mediados de la década del '80 se estableció un estándar entre los fabricantes de software y hardware para aumentar la compatibilidad entre todas las plataformas existentes. Dicho estándar establecido por la \emph{IEEE: Institute of Electrial and Electronics Engineers} y conocido como la norma \emph{IEEE-754} establece distintos formatos de representación y operaciones para la representación de números por punto flotante.

Dentro del estándar se definen ciertos perfiles tales como el de \emph{precisión} simple (32 bits: 1 bit de signo, 23 bits de mantisa y 8 para el exponente), el de \emph{precisión doble} (64bits: 1 bit de signo, 52 bits para la mantisa y 11 para el exponente) y el de \emph{precisión doble extendida con} (80 bits: 1 bit de signo, 64 bits para la mantisa y 15 bits para el exponente). Todos ellos implementados en la mayoría de los CPUs de la familia del 80x86 en adelante.

Dicha implementación en estos computadores se hace por hardware, es decir, a nivel electrónico lo que permite buen desempeño de cómputo en relación al tiempo empleado para los cálculos. Si bien, esta implementación de acuerdo a los estándares mencionados ofrece un gran rango de números representables y una densidad numérica muy alta, ésta sigue sin ser infinita a pesar que pueden representarse magnitudes que los humanos no podríamos medir.

Una alternativa para esta limitación de hardware es la de emular por software, a costo de menor performance, las operaciones matemáticas pertinentes para poder contar con una implementación de aritmética de punto flotante de precisión arbitraria (o en principio más precisa que la existente por hardware) utilizando estructuras de datos básicas y mediante el uso de algoritmos estables, como por ejemplo, para el caso de la multiplicación de números complejos.
